Diplomarbeit "Realisierung einer Verschlüsselungstechnik für Daten im ISDN B-Kanal" Inhaltsverzeichnis 1 Einleitung 2 Motivation und Zielsetzung 3 Stand der Technik 3.1 Was schon an Vergleichbarem existiert 3.2 ISDN-Basisanschluß 3.2.1 ISDN S0-Bus 3.2.2 ISDN D-Kanal 3.2.3 ISDN B-Kanal 3.3 Verschlüsselungsalgorithmen 3.3.1 Blockchiffrierer 3.3.2 Stromchiffrierer 3.3.3 Asymmetrischer RSA Algorithmus 3.3.4 Diffie Hellman Schlüsselaustausch 3.3.5 "Oneway" Algorithmen 3.4 Bausteine für dieses Projekt 3.4.1 ISDN-Bausteine 3.4.2 Prozessoren für die Verschlüsselung 4 Grobkonzept 4.1 Verschlüsselungsalgorithmus für den Datenstrom 4.2 Blockschaltplan 5 Feinkonzept 5.1 Die Chipkarte 5.2 Der Steuerprozessor mit Speicher 5.3 Der Steuerprozessor mit Peripherie 5.4 Die ISDN-Hardware 5.5 Die Ver- und Entschlüsselungs-DSPs 6 Zusammenfassung 6.1 Bewertung 6.2 Ausblicke 7 Anhang 7.1 Abbildungsverzeichnis 7.2 Index 7.3 Glossar 7.4 Liste der Signalnamen 7.5 Pinbelegung der Steckverbinder 7.6 Stücklisten 7.6.1 Stückliste ISDN-Telefon-Board 7.6.2 Stückliste ISDN-DSP-Verschlüsselungsboard 7.6.3 Stückliste der externen Bauteile 7.7 Inhalt der Daten-CD 7.8 Literaturverzeichnis 7.9 DSP-Listing 7.10 Stromlaufpläne 7.11 Bestückungspläne 7.12 Layouts 1 Einleitung In diesem Kapitel wird der Aufbau der vorliegenden Diplomarbeit erklärt. Die Arbeit besteht aus 6 Kapiteln plus Anhang. Die Einleitung, das erste Kapitel, lesen Sie gerade. Im zweiten Kapitel wird die Motivation und Zielstellung beschrieben. Warum wird das beschriebene Gerät gebraucht und welche Eigenschaften soll es erfüllen. Das dritte Kapitel befaßt sich mit dem Stand der Technik und dem technischen Umfeld. Wie ist der ISDN-Basisanschluß aufgebaut und welche Eigenschaften des ISDN-Netzes sind für diese Arbeit interressant? Und es werden die Grundlagen der Kryptographie betrachtet. Zudem wird in diesem Kapitel die Auswahl der relevanten Bauelemente für das Projekt getroffen. Im vierten Kapitel wird der Kryptoalgorithmus, der für dieses Projekt ausgewählt worden ist, beschrieben. Es wird ein Überblick über die gesamte Hardware des Verschlüsselungstelefons gegeben. Das fünfte Kapitel geht dann ins Detail. Die Hardwarekomponenten und auch die Implementierung der Kroyptoalgorithmen werden dort näher beschrieben. Als letztes Kapitel folgt eine abschließende Zusammenfassung der Arbeit und eine eigene Bewertung. Es wird auch beschrieben, was und wie dieses Gerät noch verbessert und weiterentwickelt werden kann. Im Anhang befinden sich Tabellen und Diagramme, Literatur- und Abbildungsverzeichnisse, Listen der Signalnamen und deren Bedeutung, die Pinbelegung der Steckleisten, eine Stückliste der eingesetzten Bauelemente und einiges mehr. Zudem enthält der Anhang die Stromlaufpläne, Layouts und Bestückungspläne. Dieser Diplomarbeit ist zudem eine Daten-CD beigelegt, deren Inhaltsangabe ebenfalls dem Anhang zu entnehmen ist. 2 Motivation und Zielsetzung In dieser Diplomarbeit wird der Aufbau eines Sprachverschlüsselungssystems behandelt, das am ISDN-Basisanschluß betrieben werden kann. Es gewährleistet weitgehen die Geheimhaltung der Kommunikation zwischen zwei Gesprächspartnern. Die Privatsphäre wird zur Zeit immer mehr gestört oder eingeschränkt. Angefangen von Hackern, die aus Spaß an der Sache fremde Leitungen anzapfen und mithören, über professionellen Datendiebstahl, z.B. Industriespionage, bis hin zu staatlichen Maßnahmen wie "Der große Lauschangriff" reicht die Palette der Angriffe. Man sollte sich seine Privatsspäre sichern und sich nicht zum "gläsernen Menschen" machen lassen. Ziel ist es, ein Gerät zu entwickeln, das die zu übertragenden Informationen zwischen den Endgeräten so unkenntlich für Dritte macht, daß nur die beiden Gesprächspartner ihre Nachrichten verstehen können. Die Daten, die über den hausinternen ISDN-S0-Bus, den UK0-Leitungen zu den Vermittlungsstellen und durch die Vermittlungsstellen gehen, werden verschlüsselt und können nur mit dem entsprechenden Code wieder entschlüsselt werden. Der Grund, daß für dieses Projekt das ISDN-Netz und nicht das analoge Telefonnetz genutzt wird, besteht darin, daß bei ISDN die Sprachdaten schon in digitaler Form vorliegen und nicht erst komprimiert und auf die analogen Leitungen aufmoduliert werden müssen. Es soll also ein komplettes ISDN-Endgerät, entsprechend der Funktionalität eines Telefons, aufgebaut werden, das noch zusätzlich die Nutzdaten im jeweiligen B-Kanal ver- und entschlüsselt. Die verwendbaren Verschlüsselungsalgorithmen sollten einen hohen Sicherheitsstandard aufweisen. In der heutigen Zeit ist es möglich, mit entsprechendem matriellen Einsatz, wie ihn sich einige größere Organisationen oder staatliche Behörden leisten können, einfachere Codierungen zu entschlüsseln. Der Schlüssel sollte, wie bei einem realen Schloß, entfernbar und austauschbar sein. Dafür wird in dieser Arbeit, ähnlich einer Telefonkarte, eine Chipkarte eingesetzt, die den Schlüssel enthält. Besser währen Karten, die sowohl den Schlüssel, als auch einen Teil des Algorithmuses unterbringen, wie z.B. die NetKeyCard von Telesec. Für ein ISDN-Endgerät muß das D-Kanal Protokoll (Siehe Seite 10) auf einem Steuerprozessor implementiert werden. Dieses D-Kanal Protokoll ist nicht Teil der Diplomarbeit, sondern wird in einer getrennten Arbeit behandelt. Hier geht es vielmehr um die gesamte Hardware und die Verschlüsselungsalgorithmen. Es soll der Aufbau eines ISDN-Telefons mit Verschlüsselungsfunktion gezeigt werden. Softwareseitig wird auf Ver- und Entschlüsselung von Datenströmen eingegangen. Eine besondere Anforderung an die Hardware ist, daß sie aus Bauteilen besteht, die leicht im Elektronikhandel erhältlich sind. Denn diese Schaltung soll von jedermann leicht nachbaubar sein. Es sollen also keine exotischen Spezialbauteile und keine Chips, die mit speziellen Programmiergeräten gebrannt werden müssen, eingesetzt werden. Die Leiterplatte(n) sollen maximal zweiseitig sein, damit sie noch relativ einfach zu fertigen sind. Auch dürfen die verwendeten Bauteile nicht ein zu kleines Pinraster haben, damit sie auch von jedem leicht zu verlöten sind. Also kommen erstmal nur DIL und PLCC Gehäuse in Frage. 3 Stand der Technik Hier wird die Basis für dieses Projekt beschrieben. Als erstes, was es schon an vergleichbaren Geräten gibt und was sonst noch so geplant ist. Als zweites, für die Arbeit alle wesentlichen Fakten über den ISDN-Basisanschluß. Als letztes noch, welche Halbleiter für dieses Gerät in Frage kommen. 3.1 Was schon an Vergleichbarem existiert Es existieren schon Einrichtungen, mit denen verschlüsselt auf dem ISDN-Netz telefoniert werden kann. Die meistgenutzte Variante ist der Einsatz eines Personalcomputers mit einer ISDN-Karte und einer Soundkarte. Die ISDN-Karte im PC arbeitet mit einem hardwarespezifischen CAPI-Treiber zusammen. Dieser CAPI-Treiber übernimmt alle Hardwarefunktionen der Karte und auch die gesamte Verwaltung des D-Kanals. Nun gibt es Programme, meist unter Windows, die mit Hilfe einer Soundkarte ein ISDN-Telefon simulieren. Ein Kopfhörer mit Mikrophon wird an die Soundkarte angeschlossen und damit ein Telefonhörer geschaffen. Auf einem Fenster der graphischen Oberfläche werden dann Tastenfeld und Display dargestellt. Nun kann noch bei einigen Programmen eine Verschlüsselungsfunktion aktiviert werden, um Gespräche mit einer gewissen Geheimhaltung zu führen. Die Ver- und Entschlüsselung wird dann vom Hauptprozessor des PC durchgeführt. Der Sinn dieser Variante ist, wenn schon ein PC mit ISDN und Soundkarte zur Verfügung steht, daß nur noch diese Software installiert werden muß, um verschlüsselt auf dem ISDN-Netz telefonieren zu können. Der Nachteil ist aber, daß für jedes Telefongespräch extra der PC mit Windows hochgefahren werden muß. Desweiteren ist ein kompletter PC nur zum Telefonieren z.zt. noch sehr aufwendig. Besser wäre ein Gerät wie ein normales Telefon, das eine Verschlüsselungsfunktion schon mit eingebaut hat. Die Firma Siemens baut unter dem Namen "DSM ISDN" ein solches Gerät, aber nähere Informationen sind derzeit nicht erhältlich. Das Verschlüsselungstelefon ist nicht für die Allgemeinheit bestimmt. Auch von der Telekom (Telesec) werden in einiger Zeit verschiedene Dienste gegen das illegale Abhören von Fernmeldeleitungen angeboten, die jedoch nicht generell vor einem Abhören schützen. Für das analoge Telefonnetz hat der Chaos-Computer-Club schon ein "Crypto-Phone" entwickelt. Es benutzt ein Modem zur Verbindung mit dem Telefonnetz und hat eine GSM-ähnliche Sprachkompression. Hauptbestandteil ist ein leistungsstarker DSP. Das Projekt ist neu, und es sind nur wenige Informationen zu bekommen. 3.2 ISDN-Basisanschluß Jeder normale Telefonanschluß kann, auf Antrag, in einen ISDN-Basisanschluß umgewandelt werden, wenn eine Angliederung an eine digitale Vermittlungsstelle zur Verfügung steht. Ob ein Anschluß an einer digitalen Vermittlungsstelle vorhanden ist, kann ganz einfach festgestellt werden durch den Versuch, mit Ton-Wahl (DTMF) zu wählen. Ist nur der Puls-Wahl-Modus möglich, dann ist man noch an einer alten analogen Vermittlungsstelle angeschlossen, und es wird etwas länger dauern, bis der ISDN-Anschluß geschaltet wird. Ein ISDN-Anschluß ist z.zt. teurer als ein normaler Telefonanschluß, er hat aber auch einige Vorteile. Einer der zwei wichtigsten ist, daß auf einem einzigen Leitungspaar, der UK0-Leitung, gleichzeitig zwei Kommunikatiosverbindungen nach draußen geführt werden können, was z.B. eine Dreierkonferenz ermöglicht, weiterhin Sprechen und Faxen gleichzeitig, Angerufenwerden während telefoniert wird und vieles mehr [2]. Der andere große Vorteil ist die viel höhere Übertragungsrate von Daten. Das schnellste verfügbare Modem kann auf einer normalen Telefonleitung 33,6kBit/s (spezielle Modems 56,7kBit/s) übertragen. ISDN kann 64kBit/s, oder wenn beide Kanäle benutzt werden, sogar 128kBit/s (kostet aber auch doppelt Gebühren). Bei ISDN-Anschlußverlegung wird von der Telekom ein NTBA an die Leitung angeschlossen, an der sich zuvor das analoge Telefon befunden hat (Abbildung 1). Damit wird die Leitung zur Vermittlungsstelle zur Uk0-Schnittstelle, an der natürlich kein analoges Telefon mehr angeschlossen werden darf, da sich die elektrischen Eigenschaften geändert haben. Abbildung 1: ISDN-Basisanschluß 3.2.1 ISDN S0-Bus An dem NTBA steht der S0-Bus zur Verfügung. Dort können nun die ISDN-Endgeräte (Telefon, ISDN-Karte, u.s.w.) oder eine ISDN-Telefonanlage angeschlossen werden (Abbildung 1). An diesem Bus können max. acht Geräte betrieben werden, die mit maximal zehn Meter langen Stichleitungen am Bus angeschlossen werden. Der gesamte S0-Bus darf 150 Meter bei Mehrgeräteanschluß oder 1000 Meter bei einem einzigen angeschlossenen Gerät lang sein. Dieser S0-Bus ist vieradrig, davon sind zwei Adern für den Transport der Daten vom Endgerät (TE) zum Netzabschlußadapter (NTBA oder NT) belegt und zwei für die Daten vom NT zum TE. Eine Stromversorgung für die Endgeräte wird zusätzlich mit auf dem S0-Bus zur Verfügung gestellt (Abbildung 2). Es handelt sich hierbei um eine Spannung von 40V zwischen den Leitungspaaren a1-b1 und a2-b2, die mit max 100mA belastet werden darf. Die Signale werden mittels eines Übertragers in den ISDN-Geräten aus den Leitungspaaren ausgekoppelt. Abbildung 2: ISDN Western-Stecker Beim S0-Bus repräsentiert der Netzabschlußadapter (NTBA oder NT) die Vermittlungsstelle, weil vom NTBA die Uk0-Leitung zur Vermittelungsstelle geht. Der S0-Bus sieht nur den NTBA und hat eine Übertragungsrate von 144 kBit/s netto pro Richtung. Das sind 2 B-Kanäle mit je 64 kBit/s und ein D-Kanal mit 16 kBit/s. Es gibt zudem noch Synchronisations- und Steuerbits (Abbildung 3) auf dem Bus, die hier nicht weiter betrachtet werden, da sie für die Verschlüsselung der Nutzdatenkanäle nicht weiter wichtig sind und diese Bits schon automatisch in allen am Markt verfügbaren ISDN-Chip abgearbeitet werden. Für die Verschlüsselung sind eigentlich nur die Nutzdatenkanäle, die B-Kanäle, interessant. Abbildung 3: Signale auf dem ISDN S0-Bus 3.2.2 ISDN D-Kanal In diesem Signalisierungskanal, der wichtigsten Einheit im ISDN-System, werden sämtliche Steuerfunktionen übertragen. Die ganze Organisation wie z.B. Verbindungsauf- und -abbau, ankommender Ruf (Klingel), gewählte Ziffern, Rufnummer des Gesprächspartners, Gebühreninformationen und vieles mehr wird auf dem D-Kanal übertragen. Als wichtig sei hier erwähnt, daß im D-Kanal anzugeben ist, welcher Art die Nutzdaten auf den B-Kanälen sind (Sprache oder Daten). Das ist insofern für die vorliegende Diplomarbeit wichtig, da ein Telefon "restricted" Sprechdaten anmeldet, aber diese nach dem Verschlüsseln nur noch "unrestricted" Binärdaten sind. Abbildung 4: D-Kanal Schichtenmodel Das sehr komplexe ISDN-D-Kanal Protokoll ist in 3 Schichten (Abbildung 4) aufgeteilt. Die erste Schicht ist die Hardware- und Bitübertragungsschicht. Die Richtlinien für die Schicht 1 des D-Kanals sind in der ITU-T I.430 / I.431 Norm festgelegt. Beim S0-Bus ist eine 0 dominant und die 1 rezessiv. Diese Festlegung ist wichtig, da an dem Bus bis zu 8 Geräte gleichzeitig angeschlossen sein können, die ein D-Kanal Paket senden wollen. Daher gibt es eine Kollisionserkennung, die dem Gerät mit der niedrigeren Priorität veranlaßt, die Sendung einzustellen. Da die D-Kanal Informationen bitweise übertragen werden, muß eine Bytesynchronisation stattfinden. Diese besteht aus der Bitfolge "01111110" und wird immer am Anfang und Ende eines D-Kanal Pakets übertragen. Damit es keine Verwechslungen mit Daten gibt, die auch zufällig sechs oder mehr Einsen hintereinander haben, wird nach dem "Bitstuffing" Algorithmus immer nach fünf aufeinanderfolgenden Einsen vom Sender eine Null eingefügt, die vom Empfänger wieder entfernt wird. Damit ist sichergestellt, daß die Bitfolge "01111110" nur für die Bytesychronisation zuständig ist, und acht oder mehr Einsen kennzeichnen einen freien D-Kanal. Bei der Bitfolge "011111110" wird ein Rahmenabbruch durchgeführt. Dieses Verfahren stammt aus dem HDLC-Protokoll, welches für X.25 eingesetzt wird. In der zweiten Schicht liegt die Aufgabe der Fehlererkennung und -behandlung sowie die Adressierung der Pakete auf dem D-Kanal, damit diese das richtige Gerät erreichen. Die ITU-T Norm für Schicht 2 ist Q.920 / Q.921. Die dritte Schicht enthält nun die eigentlichen Signalisierungsdaten. Es gibt zur Zeit zwei Standards für diese Schicht, die von der Telekom in Deutschland eingesetzt werden. Die eine ist die alte nationale 1TR6 Norm, die von der Bundespost eingeführt wurde. Sie wird noch voraussichtlich bis ins Jahr 2003 von der Telekom unterstützt. Die andere ist die europaweit geltende Norm DSS1 ITU-T Q.930 / Q.932. Diese Norm ist die allgemein gültige für einen zukünftigen Basisanschluß. 3.2.3 ISDN B-Kanal Sobald mit Hilfe des D-Kanals eine Verbindung zwischen zwei Partnern aufgebaut worden ist, werden die eigentlichen Nutzinformationen auf dem B-Kanal übertragen. Welcher der beiden B-Kanäle für diese Verbindung benutzt wird, wurde zuvor mit dem D-Kanal signalisiert. Die Informationen auf dem B-Kanal werden byteweise übertragen, und im Rahmen dieser Arbeit entfällt die Bytesynchronisation. Es werden pro B-Kanal 64 KBit/s oder dementsprechend 8 KByte/s übertragen. Im B-Kanal gibt es keine weitere Schichtenaufteilung, da diese Bytes gleich von der Anwendungsschicht genutzt werden. Beim ISDN-Telefon sind diese Bytes zugleich die Werte für den A/D und D/A-Wandler. Die 8 Bits werden lediglich auf 14 Bit mit dem A-law Verfahren expandiert. Diese Bit-Expansion und Kompression ist in der IUT-T G.711 beschrieben. Durch ISDN-Karten werden die Bytes aus dem ISDN-Kanal direkt in den Computer übertragen und dort nach Bedarf weiterverarbeitet. Für die Verschlüsselung der B-Kanal Daten ist folgendes zu beachten: Der konstante Bytestrom von 8000 Byte/s kann fehlerhafte Bytes enthalten. Es muß nun dafür gesorgt werden, daß dieser Bytestrom beim Sender verschlüsselt und beim Empfänger entschlüsselt wird und sich somit wieder die ursprünglichen Daten ergeben, obwohl durchaus ein Byte während der Übertragung gestört werden kann. Welcher Art die eigentlichen Nutzdaten sind (Sprache, Fax oder Daten) ist unerheblich. Der Vermittlungsstelle muß lediglich über dem D-Kanal mitgeteilt werden, daß "unrestricted" Binärdaten übertragen werden, damit diese nicht als Sprachdaten interpretiert werden und unter Umständen z.B. durch GSM-Sprach-Compression oder analoge Leitungen einer Verfremdung unterliegen. 3.3 Verschlüsselungsalgorithmen Ver- und Entschlüsselungsalgorithmen sind besondere Rechenvorschriften mit zwei Eingangs- und einer Ausgangsvariablen [1]. Einer der Eingangswerte ist immer der Schlüssel (k). Für die Verschlüsselung (E) ist der andere Eingangswert der Klartext (m), und der Ausgangswert ist der Chiffretext (c). Beim Entschlüsseln (E-1) ist es umgekehrt, der Chiffretext (c) geht in den Algorithmus rein, und es kommt bzw. sollte herauskommen der Klartext (m), falls der Schlüssel (k) stimmt. Das besondere an diesen Algorithmen ist folgendes: Es dürfen keinerlei Rückschlüsse auf den Schlüssel (k) bzw. den Inhalt des Klartextes (m) gezogen werden können, wenn nur der Chiffretext (c) bekannt ist. Ebenfalls darf auch der Schlüssel (k) nicht mit der Kenntnis von Chiffre- und Klartextpaaren zurückgerechnet werden können. Die Sicherheit eines Verschlüsselungsalgorithmusses hängt von der Länge des Schlüssels (k) ab. Theoretisch ist es bei symmetrischen Algorithmen so, daß mit jedem Bit um das der Schlüssel (k) länger wird, es doppelt so schwer wird, ihn durch durch Austesten offenzulegen. Es gibt nun mehrere Arten von Verschlüsselungsalgorithmen, die in zwei Klassen von Algorithmen aufgeteilt werden können: ( Symmetrische Verschlüsselungsalgorithmen Blockchiffrierer, Stromchiffrierer, Oneway-Algorithmen ( Asymetrische Verschlüsselungsalgorithmen RSA, Diffie Hellman Schlüsselaustausch 3.3.1 Blockchiffrierer Die Blockchiffrierer verschlüsseln einen Klartextblock mit konstanter Größe, meist 64 Bit, zu einem Chiffretextblock mit gleicher Größe, und beim Entschlüsseln entsprechend umgekehrt. Es wird beim Ver- und Endschlüsseln der gleiche Schlüssel (k) verwendet. Daher sind diese Algorithmen symmetrisch. Solche Algorithmen bestehen meist aus Iterationen von Bitpermutation, Shiften, XOR, Lookuptables und besonderen Multiplikationen. Die bekanntesten Algorithmen sind DES und IDEA. 3.3.2 Stromchiffrierer Diese Chiffrierer sind ebenfalls symmetrisch, aber es gibt keine konstante Größe der Klar- und Chiffretextblöcke. Sie ver- und entschlüsseln Bit- oder Byteströme. Je nach Art des Algorithmusses sind die Verschlüsselungsmuster nur vom Schlüssel (k) oder vom Schlüssel (k) zusätzlich des Datenstromes abhängig. Entweder handelt es sich bei ihnen um reine Stromchiffrierer wie RC4 oder A5-GSM, oder es werden Blockchiffrierer mit besonderen Rahmenalgorithmen eingesetzt und so zu Stromchiffrierern umfunktioniert. 3.3.3 Asymmetrischer RSA Algorithmus Besonders interessant sind die asymmetrischen Algorithmen, wie RSA, in denen für die Ver- und Entschlüsselung zwei verschiedene Schlüssel (kS, kP) eingesetzt werden. Der Schlüssel (kS) bleibt geheim, und der Schlüssel (kp) wird veröffentlicht. Das hat den großen Vorteil, daß jeder eine Nachricht mit dem öffentlich verfügbaren Schlüssel (kP) verschlüsseln kann, aber nur mit dem privaten Schlüssel (kS) diese Nachricht wieder entschlüsseln kann. Der Algorithmus hat die recht einfache aber doch sehr wirkungsvolle Formel: "c = mk MOD n" (m=Klartext, c=Chiffretext, n=Produkt zweier Primzahlen und zusammen mit k ein Teil des Schlüssels). Das Geheimnis liegt in der Auswahl der Zahlen kS, kP und n. Die Zahlen kS, kP und n müssen sehr groß (1024 Bit oder mehr) gewählt werden, damit der Algorithmus sicher ist. Dieser Algorithmus eignet sich aber nicht, um direkt Daten zu verschlüsseln, sondern es muß zusätzlich ein symmetrischer Algorithmus hinzugenommen werden, um die eigentlichen Datenströme zu verschlüsseln (Hybritalgorithmus) (Abbildung 5). Genau das macht das sehr gute Programm PGP, das für die Verschlüsselung von eMails im Internet verwendet wird [5]. Es verwendet eine Kombination von RSA und IDEA. Abbildung 5: Hybrid-Algorithmus mit RSA und IDEA (PGP) 3.3.4 Diffie Hellman Schlüsselaustausch Noch eine elegante Art, den symmetrischen Schlüssel auszutauschen, ist der Diffie Hellman Schlüsselaustausch. Hier können sich zwei Partner, die zuvor noch keine Daten ausgetauscht haben, in aller Öffentlichkeit auf einen geheimen Schlüssel für einen symmetrischen Algorithmus einigen, ohne das Dritte ihn erfahren. Genauso wie beim RSA basiert alles auf der Rechnung "c = mk MOD n", und es müssen auch hier sehr große Zahlen (1024Bit oder mehr) gewählt werden. Partner A Öffentlichkeit Partner B a ( N und a

CPU 5 : Control-Data CPU -> DSP 6 : Vcc X12: DSP-Platine 1 : GND 2 : Frame-Sync 1 3 : Frame-Sync 2 4 : Clock ( 192 kHz ) 5 : ISDN-Data ISDN -> DSP 6 : ISDN-Data DSP -> ISDN 7 : Vcc 7.6 Stücklisten 7.6.1 Stückliste ISDN-Telefon-Board Halbleiter: 1x DS80C320 DIL40 IC1 1x 74ACT573 DIL20 IC2 1x 27C512-100 DIL28 prog. IC3 1x 62C256-70 DIL28 IC4 1x M48T08-100 DIL28+Batt. IC5 1x AM79C30A PLCC44 IC6 1x 74C922/3 DIL18/20 IC7 1x 74ACT139 DIL16 IC8 2x 74ACT00 DIL14 IC9, IC10 1x TL074 DIL14 IC11 1x TDA7050 DIL8 IC12 1x LM2575HVN DIL16 IC13 3x MBR160 RM10 D10, D11, D12 1x 1N4148 RM7,5 D20 8x 1N4007 RM10 D31-D38 1x Q=11,052MHz RM5 Q1 1x Q=12,288MHz RM5 Q2 1X Q=3,5795MHz RM5 Q3 Widerstände: 1x 10( RM7,5 R60 4x 24( RM7,5 R35-R38 1x 100( RM7,5 R63 6x 1,0k( RM7,5 R44-R47, R50, R51 1x 2,2k( RM7,5 R62 4x 2,7k( RM7,5 R31-R34 16x 10k( RM7,5 R20, R30, R33, R39, R40-R43, R52-R57, R70 2x 100k( RM7,5 R58, R59 1x 1,0M( RM7,5 R61 1x 4 x 4,7k( SIL5 RN1 1x Poti=10k( P-10 liegend P5 2x Poti=22k( P-10 liegend P1, P2 2x Poti=470k( P-10 liegend P3, P4 Kapazitäten: 6x 15pF RM2,5 C21, C22, C31, C32, C61, C62 4x 100pF RM2,5 C52, C53, C56, C57 1x 1,0nF RM2,5 C45 1x 2,2nF RM2,5 C30 20x 100nF RM2,5 C33, C43-C45, C52, C53, C58, C59, C101-C112 1x 220nF RM5 C72 2x 1,0(F RM2,5 C54, C55 1x 2,2(F RM2,5 tant. C20, C71 2x 47(F / 6V RM2,5 C41, C42 1x 100(F / 6V RM2,5 C40 1x 100(F / 60V RM5 C10 2x 470(F / 6V RM5 C11 Induktivitäten: 1x ZKB 5051/X005 ISDN-ÜTr. TR1 1x 1000(H / 2A RM10 L10 Sockel / Steckverbinder: 1x 44 pol. PLCC IC6 1x 40 pol. DIL IC1 3x 28 pol. DIL IC3, IC4, IC5 2x 20 pol. DIL IC2, IC7 2x 16 pol. DIL IC8, IC13 3x 14 pol. DIL IC9, IC10, IC11 1x 8 pol. DIL IC12 1x 2 x 7 Stecker RM2,54 X1 1x 1 x 9 Stecker RM2,54 X2 1x 1 x 7 Stecker RM2,54 X12 2x 1 x 6 Stecker RM2,54 X3, X11 1x 1 x 5 Jumper RM2,54 JP1 3x 1 x 4 Stecker RM2,54 X4, X5, X6 1x 1 x 3 Stecker RM2,54 JP2 1x 1 x 2 Stecker RM2,54 X7 7.6.2 Stückliste ISDN-DSP-Verschlüsselungsboard Halbleiter: 2x TMS320C26B PLCC44 IC1, IC2 1x Osc=40MHz DIL14 / 4 IC3 1x 74HCT157 DIL16 IC4 1x 74HCT86 DIL14 IC5 Widerstände: 2x 100( RM7,5 R1, R2 2x 10k( RM7,5 R3, R4 2x 6 x 10k( SIL7 RN1, RN2 Kapazitäten: 5x 100nF RM2,5 C1-C5 Sockel / Steckverbinder: 2x 68 pol PLCC IC1, IC2 1x 16 pol DIL IC4 1x 14 pol DIL IC5 1x 4 pol DIL14 / 4 IC3 2x 2 pol RM2,54 JP1, JP2 1x 1 x 7 Buchse RM2,54 X2 1x 1 x 6 Buchse RM2,54 X1 7.6.3 Stückliste der externen Bauteile LC-Display 2x40 mit 14-poliger Verbindungsleitung Matrix-Tastatur 4x4 / 5x4 mit 8/9-poliger Verbindungsleitung Chipkarten-Schacht mit 6-poliger Verbindungsleitung zwei Lautsprecher mit einer 4-poligen Verbindungsleitung zwei Mikrofone mit einer 4-poliger Verbindungsleitung Taster/Schalter mit 2-poliger Verbindungsleitung 7.7 Inhalt der Daten-CD DIPLOM(dir) ; Dateien der Diplomarbeit DIPLOM.DOC ; Die Diplomarbeit in WinWord6 DECKBLAT.DOC ; Deckblatt der Diplomarbeit in WinWord6 ISDN_TEL.SCH ; Stromlaufplan der Telefonplatine in Eagle3 ISDN_DSP.SCH ; Stromlaufplan der DSP-Platine in Eagle3 ISDN_TEL.BRD ; Layout der Telefonplatine in Eagle3 ISDN_DSP.BRD ; Layout der DSP-Platine in Eagle3 ISDNTEL.ASM ; Sourcecode für den Steuerprozessor IDEA_*.ASM ; Sourcecode für die DSPs DATASHET(dir) ; Datenblätter der Halbleiter im PDF-AdobeAcrobatRead-Format T320C26.PDF ; TMS320C2x DSP von TI 80C320.PDF ; DS80C320 51er CPU von Dallas AM79C30A.PDF ; AM79C30A ISDN-Controller von AMD 27C512.PDF ; 27C512 64kB EPROM 62256.PDF ; 62256 32kB RAM M48T08.PDF ; M48T08 8kB NVRAM + RTC von ST MM74C922.PDF ; MM74C922/3 Tastertur-Controller von NS LM2575HV.PDF ; LM2575HVN Schaltregler von NS TL074.PDF ; TL074 4fach OPV von TI TDA7050.PDF ; TDA7050 Lautsprecherverst. von Philips 74HCT573.PDF ; 74HCT573 8bit Zwischenspeicher 74HCT139.PDF ; 74HCT139 2fach DeMultiplexer 74HCT157.PDF ; 74HCT157 4fach Multiplexer 74HCT86.PDF ; 74HCT86 4fach XOR 74HCT00.PDF ; 74HCT00 4fach NAND MBR160 ; MBR160 Diode von Motorola HD447800.PDF ; HD44700 LC-Display-Controller von Hitachi DOCUMENT(dir) ; ITU-T Normen im WinWord-Format Q093*.DOC ; ITU-T Normen ISDN D-Kanal Schicht 3 Q092*.DOC ; ITU-T Normen ISDN D-Kanal Schicht 2 I043*.DOC ; ITU-T Normen ISDN Schicht 1 G0711.DOC ; ITU-T Norm Codec 8 <-> 14 Bit Expansion EXTRA(dir) IDEA.ASM ; IDEA Algorithmus in i386er Assembler IDEA.C ; IDEA Algorithmus in C IDEA.H ; gehört zu IDEA.C SERPROG.SCH ; Stromlaufplan Chipkarten Programmiergerät in Eagle3 SERPROG.BRD ; Layout Chipkarten Programmiergerät in Eagle3 SOFTWARE(dir) EAGLE(dir) ; Platinen Layout Programm EAGLE v3.02 TMS320C2(dir) ; Software für den DSP A51(dir) ; Software für die 51er CPU ACROBAT(dir) ; Anzeigeprogramm für *.PDF WORDVIEW(dir) ; Anzeigeprogramm für *.DOC PGP(dir) PGP26*.ZIP ; PGP ausführbares Prgramm PGP26*S.ZIP ; PGP Sourcecode PGP_GER.TXT ; Deutsche Dokumentation zu PGP Achtung! Einige Programme im Verzeichnis "Software" sind urheberrechtlich geschützt. Diese Programme dürfen nur kopiert und eingesetzt werden, wenn ein Lizenzvertrag für diese Programme vorliegt. Bitte beachten Sie die Lizenzbestimmungen der einzelnen Programme. 7.8 Literaturverzeichnis [1] "Applied Cryptography" second edition von Bruce Schneier beim Wiley-Verlag ISBN 0-471-11709-9 [2] "Technik der Netze" 3.Auflage von Gerd Siegmund beim R.v.Deker-Verlag ISBN 3-7685-2495-7 [3] "Das Mikrocontroller Kochbuch" von Andreas Roth beim IWT-Verlag ISBN 3-88322-225-9 [4] "Handbuch der Chipkarten" von Rankl / Effing beim Hanser-Verlag ISBN 3-446-17993-3 [5] PGP-Verschlüsselungssoftware(PGP v2.6.2i) von Philip Zimmermann * [6] Datenbuch "TMS320C2x" von Texas Instruments * [7] Datenbuch "AM79C30A" von AMD * * mit auf der Daten-CD 7.9 DSP-Listing data0 .SET 00600h ; 4 x 16Bit für die 64Bit data1 .SET 00601h ; Daten (vom Klartext bis data2 .SET 00602h ; hin zum Ciffretext) data3 .SET 00603h data4 .SET 00604h ; Zwischenergebniss innerhalb data5 .SET 00605h ; einer IDEA-Runde temp .SET 00606h ; Temp für Multiplikation ser_dat .SET 00607h ; Byte von seriellem Prot key0 .SET 00608h ; 8 x 16 Bit = 128Bit key1 .SET 00609h ; für den Schlüssel key2 .SET 0060Ah key3 .SET 0060Bh key4 .SET 0060Ch key5 .SET 0060Dh key6 .SET 0060Eh key7 .SET 0060Fh e_key_begin .SET 00610h ; erster expandierter Schlüssel e_key_end .SET 00640h ; letzter expandierter Schlüssel shift0 .SET 00670h ; 8 Speicherzellen für shift1 .SET 00671h ; das Schieberegister shift2 .SET 00672h ; Es werden nur 8Bit je shift3 .SET 00673h ; Speicherplatz verwendet shift4 .SET 00674h shift5 .SET 00675h shift6 .SET 00676h shift7 .SET 00677h ; --------------------------------------------------------------------------- .DS 00608h ; Bitmuster für Testschlüssel ; !!! ; hier muss der Schlüssel rein init_test_key: .WORD 00000h, 01111h, 02222h, 03333h .WORD 04444h, 05555h, 06666h, 07777h ; --------------------------------------------------------------------------- .PS 0FA00h ; Einsprungsadresse für .ENTRY ; das Hauptprogramm RESET: B start .PS 0FA0Ah ; Einsprungsadresse für B0RINT: B RINT ; den seriellen Interrupt ; --------------------------------------------------------------------------- .PS 0FB00h ; Hauptprogramm start: SPM 0 ; Akku-Shift-Mode=0 RSXM ; Unsigned Mode FORT 1 ; Serialport initialisieren RTXM SFSM LDPK 0Ch ; Setze Datenpointer auf $0600 CALL idea_key_exp, *, 7 ; IDEA-Key expandieren LDPK 00h ; Interrupt freigeben LARP 00h LARK AR0,0 LACK 010h SACL 004h EINT loop: B loop ; Endlosschleife ; --------------------------------------------------------------------------- RINT: LDPK 00h ; Interrupt-Service-Routine SST1 060h LAC 000h ; hole Byte aus dem Serialport LDPK 0Ch SACL ser_dat ; speicher Byte in "ser_dat" CALL idea_cyk, *, 7 ; führe IDEA-Berechnung aus LAC ser_dat XOR data0 ; !!! ; Verexclusivoderung des Datenbytes CALL idea_shift, *, 7 ; vor oder nach dem Schieben ; XOR data0 ; !!! ; ob ver- oder entschlüsseln LDPK 00h SACL 001h ; schreibe Datenbyte auf Serialport LST1 060h EINT ; Interrupt-Service-Routine RET ; verlassen ; --------------------------------------------------------------------------- idea_key_exp: LRLK AR7,e_key_begin ; IDEA-Schlüessel expandieren LRLK AR0,e_key_end idea_key_exp_3: RPTK 007h ; 8 Teilschlüssel herrauskopieren BLKD key0, *+ LARK AR2, 018h ; 128bitigen Schlüssel 25Bit nach LARP 2 ; links rotieren idea_key_exp_2: ZALH key0 ; MSB aus key0 holen ROL ZALH key6 ; key7 und key6 um 1 Bit nach OR key7 ; links schieben ROL SACL key7 SACH key6 ZALH key4 ; key5 und key4 um 1 Bit nach OR key5 ; links schieben ROL SACL key5 SACH key4 ZALH key2 ; key3 und key2 um 1 Bit nach OR key3 ; links schieben ROL SACL key3 SACH key2 ZALH key0 ; key1 und key0 um 1 Bit nach OR key1 ; links schieben ROL SACL key1 SACH key0 BANZ idea_key_exp_2, *- LARP 7 ; Test, ob alle Teilschlüssel CMPR 02 ; expandiert worden sind BBZ idea_key_exp_3 LRLK AR7,e_key_begin ; jeden Teilschlüssel mit LRLK AR0,e_key_end ; $0DEA verexclusivodern idea_key_exp_1: LAC * XORK 00DEAh SACL *+ CMPR 02 BBZ idea_key_exp_1 RET ; --------------------------------------------------------------------------- idea_shift: ANDK 000ffh ; Byte in das Schieberegister laden LRLK AR7, 00676h RPTK 006h DMOV *- SACL shift0 RET ; --------------------------------------------------------------------------- idea_cyk: LT shift7 ; Inhalt des Schieberegisters MPYK 00100h ; für den IDEA-Algorithmus auslesen PAC OR shift6 SACL data3 LT shift5 MPYK 00100h PAC OR shift4 SACL data2 LT shift3 MPYK 00100h PAC OR shift2 SACL data1 LT shift1 MPYK 00100h PAC OR shift0 SACL data0 ; --------------------------------------------------------------------------- idea_start: LRLK AR7,e_key_begin ; Der IDEA-Algorithmus LRLK AR0,e_key_end idea_loop: LAC * ; IDEA-Multiplikation BZ idea_00 LAC data0 BZ idea_01 LT data0 MPYU *+ PAC SPH temp SUBH temp SUB temp BNC idea_02 B idea_03 idea_00: LAC data0 B idea_04, *+ idea_01: LAC *+ idea_04: NEG idea_02: ADDK 001h idea_03: SACL data0 LAC data1 ; 16bit Addition ADD *+ SACL data1 LAC data2 ; 16bit Addition ADD *+ SACL data2 LAC * ; IDEA-Multiplikation BZ idea_10 LAC data3 BZ idea_11 LT data3 MPYU *+ PAC SPH temp SUBH temp SUB temp BNC idea_12 B idea_13 idea_10: LAC data3 B idea_14, *+ idea_11: LAC *+ idea_14: NEG idea_12: ADDK 001h idea_13: SACL data3 LAC data0 ; XOR XOR data2 SACL data4 LAC data1 ; XOR XOR data3 SACL data5 LAC * ; IDEA-Multiplikation BZ idea_20 LAC data4 BZ idea_21 LT data4 MPYU *+ PAC SPH temp SUBH temp SUB temp BNC idea_22 B idea_23 idea_20: LAC data4 B idea_24, *+ idea_21: LAC *+ idea_24: NEG idea_22: ADDK 001h idea_23: SACL data4 ADD data5 ; 16bit Addition SACL data5 LAC * ; IDEA-Multiplikation BZ idea_30 LAC data5 BZ idea_31 LT data5 MPYU *+ PAC SPH temp SUBH temp SUB temp BNC idea_32 B idea_33 idea_30: LAC data5 B idea_34, *+ idea_31: LAC *+ idea_34: NEG idea_32: ADDK 001h idea_33: SACL data5 ADD data4 ; 16bit Addition SACL data4 LAC data0 ; XOR XOR data5 SACL data0 LAC data1 ; XOR XOR data4 SACL data1 LAC data2 ; XOR XOR data5 SACL data2 LAC data3 ; XOR XOR data4 SACL data3 LAC data2 ; die mittleren beiden 16 Bit Daten DMOV data1 ; vertauschen SACL data1 CMPR 1 ; Test auf 8 Durchgänge BBNZ idea_loop LAC data2 ; Vertauschung für die letzte halbe DMOV data1 ; Runde rückgängig machen SACL data1 LAC * ; IDEA-Multiplikation BZ idea_40 LAC data0 BZ idea_41 LT data0 MPYU *+ PAC SPH temp SUBH temp SUB temp BNC idea_42 B idea_43 idea_40: LAC data0 B idea_44, *+ idea_41: LAC *+ idea_44: NEG idea_42: ADDK 001h idea_43: SACL data0 LAC data1 ; 16bit Addition ADD *+ SACL data1 LAC data2 ; 16bit Addition ADD *+ SACL data2 LAC * ; IDEA-Multiplikation BZ idea_50 LAC data3 BZ idea_51 LT data3 MPYU *+ PAC SPH temp SUBH temp SUB temp BNC idea_52 B idea_53 idea_50: LAC data3 B idea_54, *+ idea_51: LAC *+ idea_54: NEG idea_52: ADDK 001h idea_53: SACL data3 RET ; --------------------------------------------------------------------------- 7.10 Stromlaufpläne 7.11 Bestückungspläne 7.12 Layouts Seite 27 / 1